package org.example;

import org.example.entity.LdapUser;
import org.example.entity.Person;
import org.example.util.LdapUtil;

import javax.naming.ldap.LdapContext;
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) throws Exception {
//        System.out.println("Hello world!");
//
//        String url = "ldap://10.129.71.161:389/";
//        String basedn = "OU=APP-MBK,OU=UserGroup,dc=hkg,dc=hkbea,dc=com";  // basedn
//        //String basedn = "iccadsvcuat";
//        //String root = "cn=iccadsvcuat,dc=hkg,dc=hkbea,dc=com";  // 用户
//        String root = "iccadsvcuat@hkg.hkbea.com";
//        String key = "iccadsvcuat";
//        String dn = "CN=ICCADSVCUAT,OU=APP-ICC,OU=UserGroup,DC=hkg,DC=hkbea,DC=com";
//        String pwd ="gss$8477";  // pwd
//        System.out.println(url+root+pwd);
//        LdapContext ctx=LdapUtil.ldapConnect(url,root,pwd);// ldap认证
//        List<LdapUser> jtlm= LdapUtil.readLdap(ctx,basedn);//获取ldap中用户信息
//        //Person per = LdapUtil.search(ctx,key,basedn);
//
//        for (LdapUser user :jtlm) {
//            System.out.println("用户名："+ user.getCn()+"，用户密码："+user.getUserPassword()+"，用户描述："+user.getDescription());
//        }
//        System.out.println("所有用户信息:"+ jtlm);

        //添加用户
//        long init_uid= LdapUtil.getNowTimeStamp();
//        LdapUser lu = new LdapUser();
//        lu.setUid(init_uid+"");
//        lu.setGidNumber(init_uid+"");
//        lu.setUidNumber(init_uid+"");
//        lu.setCn("test1");
//        lu.setSn("ICC");
//        lu.setUserPassword("gss$0987");
//        lu.setDisplayName("test");
//        lu.setMail("test@agree.com.cn");
//        LdapUtil.addUser(lu,ctx);
//        List<LdapUser> jtlm2= LdapUtil.readLdap(ctx,dn);//获取ldap中用户信息
//        System.out.println("获取用户信息:"+ jtlm2);


        System.out.println("Hello world!");

        String url = "ldap://10.129.71.161:389/";
        String basedn = "OU=APP-MBK,OU=UserGroup,dc=hkg,dc=hkbea,dc=com";
//        String root = "LERD040@hkg.hkbea.com";
        String root = "MBKSvcCMSLDAPUAT@hkg.hkbea.com";
        String dn = "CN=MBKSvcCMSLDAPUAT,OU=APP-MBK,OU=UserGroup,DC=hkg,DC=hkbea,DC=com";
        String pwd ="DL4!df456S9r&5";
//        String pwd = "Bb123456.";
        System.out.println(url+root+pwd);
        LdapContext ctx=LdapUtil.ldapConnect(url,root,pwd);// ldap认证
        List<LdapUser> jtlm= LdapUtil.readLdap(ctx,"(objectClass=group)",basedn);//获取ldap中用户信息
        for (int i=0;i<jtlm.size();i++) {
            LdapUser user = jtlm.get(i);
            System.out.println("第"+i+"个-用户名："+ user.getCn()+"，用户密码："+user.getUserPassword()+"，用户描述："+user.getDescription());
        }

//        String dn1 = "CN=MBK_CMS_Users_UAT,OU=APP-MBK,OU=UserGroup,DC=hkg,DC=hkbea,DC=com";
//        String key1 = "LERD040";
//        Person per1 = LdapUtil.search(ctx,key,dn1);
//        System.out.println("查询用户LERD040："+per1);

        System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
//        basedn = "CN=MBK_CMS_Users_UAT,OU=APP-MBK,OU=UserGroup,DC=hkg,DC=hkbea,DC=com";
//        List<LdapUser> jtlm1= LdapUtil.readLdap(ctx,basedn);//获取ldap中用户信息
//        for (int i=0;i<jtlm1.size();i++) {
//            LdapUser user = jtlm1.get(i);
//            System.out.println("第"+i+1+"个-用户名："+ user.getCn()+"，用户密码："+user.getUserPassword()+"，用户描述："+user.getDescription());
//        }
        System.out.println("***************************************************");
        basedn="CN=LERD040,OU=ERD,OU=BEA Users - Windows 10 PRD,DC=hkg,DC=hkbea,DC=com";
        List<LdapUser> jtlm2= LdapUtil.readLdap(ctx,"(objectClass=*)",basedn);//获取ldap中用户信息
        for (int y=0;y<jtlm2.size();y++) {
            LdapUser user = jtlm2.get(y);
            System.out.println("第"+y+1+"个-用户名："+ user.getCn()+"，用户密码："+user.getUserPassword()+"，用户描述："+user.getDescription());
        }

        //校验用户
        LdapUtil.authenticate(ctx,"CN=TATC048,OU=ITD,OU=BEA Users - Windows 10 PRD,DC=hkg,DC=hkbea,DC=com","Cc123456.");

        LdapUtil.authenticate(ctx,"CN=TATC068,OU=ITD,OU=BEA Users - Windows 10 PRD,DC=hkg,DC=hkbea,DC=com","Cc123456.");

    }
}
